package main

import (
	"fmt"
	"net/http"

	"github.com/gin-gonic/gin"
)

func myHandler(c *gin.Context) {
	c.JSON(200, map[string]string{
		"message": "自定义 gin.H 实际就是个 map 结构",
		"data":    "pong",
	})
}

func main() {

	fmt.Println("hello module")

	// Default returns an Engine instance with the Logger and Recovery middleware already attached.
	//创建一个 gin 的默认实例
	r := gin.Default()

	//匿名函数实现
	r.GET("/ping", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "test module gin",
			"data":    "pong",
		})
	})

	//传入变量实现
	r.GET("test", myHandler)

	r.GET("hello", helloHandler)

	r.GET("type", typeHandler)

	//默认8080
	//基于http
	r.Run(":80")
}

//自定义返回类型
//map[string]string只能存 string 类型的值, 而 interface{} 可以存所有类型的值
type udfMap map[string]interface{}

func typeHandler(c *gin.Context) {
	c.JSON(http.StatusOK, udfMap{
		"message": "自定义 map 结构",
		"flag":    true,
		"data":    nil,
	})
}

func helloHandler(c *gin.Context) {
	c.String(200,
		"test module gin3")
}
